// Desc: 验证 token 中间件
const { setToken, getToken } = require('@/utils/index.js');

module.exports = async (redis , req, res, next)=> {
    const token = req.headers['authorization'];
    try{
        if (!token) {
            // throw new Error('No token provided')
            res.status(401).createResponse(500, 'No token provided')
        } else {
            //从前端传来的token中解密出userId
            const { userId } = getToken(token);
            req.userId = userId;
            // 从 Redis 中获取 token
            const tokenInRedis = await redis.get(userId);
           
            // 如果 Redis 中没有 token，或者 token 已过期
            if (!tokenInRedis) {
                res.status(401).createResponse(500, 'Token not found or expired')
            } else {
                // 如果 Redis 中有 token，并且 token 未过期，继续处理请求
                next();
            }
        }

    }catch(e){
        next('aaaa'+e)
    }
    
};